#include "ThreadPool.hpp"
#include <functional>


using namespace ThreadPoolModule;
using task_t = std::function<void()>;

int main()
{
    Enable_Console_Log_Strategy()

    task_t fun1 = []()
    { LOG(LogLevel::INFO) << "下载任务..."; };
    task_t fun2 = []()
    { LOG(LogLevel::INFO) << "日志查看..."; };
    task_t fun3 = []()
    { LOG(LogLevel::INFO) << "上传任务..."; };
    task_t fun4 = []()
    { LOG(LogLevel::INFO) << "网络任务..."; };
    task_t fun5 = []()
    { LOG(LogLevel::INFO) << "通信任务..."; };
    std::vector<task_t> _tasks = { fun1, fun2, fun3, fun4, fun5 };

    /* 入任务 */
    for(int i = 0; i < 5; ++i) /* 5个任务 */
    {
        ThreadPool<task_t>::GetInstance()->Enqueue(_tasks[i]);
    }

    /* 不使用，结束掉 */
    ThreadPool<task_t>::GetInstance()->Stop();

    /* 回收所有的线程 */
    ThreadPool<task_t>::GetInstance()->Join();

    return 0;
}


// tp->Enqueue([](){ 
//     sleep(1);
//     LOG(LogLevel::DEBUG) << "这是一个日志任务";
// });
// tp->Enqueue([](){ 
//     sleep(1);
//     LOG(LogLevel::DEBUG) << "这是一个下载任务";
// });
// tp->Enqueue([](){ 
//     sleep(1);
//     LOG(LogLevel::DEBUG) << "这是一个上传任务";
// });

// V1 Test Log.hpp
// int main()
// {
//     Enable_Console_Log_Strategy()
//     LOG(LogLevel::INFO) << "这是一条日志信息";
//     LOG(LogLevel::DEBUG) << "这是一条测试信息";
//     LOG(LogLevel::ERROR) << "这是一条错误信息";
//     LOG(LogLevel::WARING) << "这是一条警告信息";
//     LOG(LogLevel::FATAL) << "这是一条崩溃信息";

//     return 0;
// }